import random

stu = []  # 创建空列表
stu_name = 'ABCDEFGHIJKLMNO'

for c in stu_name:
    stu_yz = (c, random.randint(35, 100))  # 随机生成15个在[35，100]区域内的键值对
    stu.append(stu_yz)  # 将学生元组stu_yz加入列表

dict = dict(stu)  # 列表转换成字典
dict1 = sorted(dict.items(), key=lambda x: x[1], reverse=True)  # 按降序进行排序，并打印
print(dict1)

scores = sum([s[1] for s in stu])
avg = scores / len(dict)
print("平均分:{:.2f}".format(avg).center(163))

max_score = max([s[1] for s in stu])  # 找出学生成绩最大值
print("最大值:{:.2f}".format(max_score).center(163))

min_score = min([s[1] for s in stu])  # 找出学生成绩最小值
print("最小值:{:.2f}".format(min_score).center(163))

stu2 = [s[1] for s in stu if s[1] < 60]  # 根据成绩抽取不及格的学生，得到stu2
print('不及格人数:', len(stu2))

while True:
    try:
        name = input("请输入要查询的学生姓名：")
        if name not in dict:
            print('请输入正确的学生名字!')
            continue  # 跳出当前循环，并继续开始下一循环
        else:
            personal_score = dict[name]  # 找出与 输入的键 相应的值
            avg = scores / len(dict)
            print("该生成绩为：{}".format(personal_score))
        if personal_score > avg:
            print("该生成绩属于上等水平")
        elif personal_score == avg:
            print("该生成绩属于中等水平")
        else:
            print("该生成绩属于下等水平")
        break  # 循环结束

    except NameError:
        print('请输入正确的学生姓名!')
    finally:
        print('---' * 12)
